使用Android Studio检测内存泄露

您所在的位置:网站首页 android studio 内存监控 使用Android Studio检测内存泄露

使用Android Studio检测内存泄露

2024-07-09 18:11| 来源: 网络整理| 查看: 265

内存泄露,是Android开发者最头疼的事。可能一处小小的内存泄露,都可能是毁千里之堤的蚁穴。 怎么才能检测内存泄露呢? AndroidStudio 中Memory控件台(显示器)提供了一个内存监视器。我们可以通过它方便地查看应用程序的性能和内存使用情况,从而也就可以找到需要释放对象,查找内存泄漏等。

熟悉Memory界面

打开日志控制台,有一个标签Memory ,我们可以在这个界面分析当前程序使用的内存情况。 这里写图片描述 运行要监控的程序(APP)后,打开Android Monitor控制台窗口,可以看到Memory控制台。 点击Memory控制台上Enable按钮,Memory控制台开始显示正在运行时程序的Memory使用情况。如上图中显示: AndroidStudio Memory的功能:

启动与关闭Memory监测按钮手动触发GC按钮dump java heap 按钮,点击Android Studio就开始干活了,成功后会自动打开 hprof文件。start(stop) allocation tracking按钮先点击一次,然后会看到Memory Recorder开始转动,然后自己开始在APP上面做相应的操作。在合适的时间再点一次,结束记录。 如何检测内存泄露

我们点击dump java heap 这个按钮,APP会Freeze住。大概几十秒后, dump成功后会自动打开 hprof文件。 这里写图片描述

如果我们想了解内存分配更详细的情况,可以使用Allocation Traker来查看内存到底被什么占用了。 点击Starg Allocation Tracking按钮。开始分配追踪,过一些时间后,点击Stop Allocation Tracking结束追踪的位置。停止追踪后 .alloc文件会自动打开。 这里写图片描述 当你想查看某个方法的源码时,右键选择的方法,点击Jump to source就可以了。

使用LeakCanary

LeakCanary是square公司推出的一款简单粗暴的检测内存泄漏的工具。 LeakCanary会检测应用的内存回收情况,如果发现有垃圾对象没有被回收,就会去分析当前的内存快照,也就是上边MAT用到的.hprof文件,找到对象的引用链,并显示在页面上。这款插件的好处就是,可以在手机端直接查看内存泄露的地方,可以辅助我们检测内存泄露。 这里写图片描述 使用: 在build.gradle文件中添加,不同的编译使用不同的引用:

dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3' }

在应用的Application onCreate方法中添加LeakCanary.install(this),如下:

public class ExampleApplication extends Application { @Override public void onCreate() { super.onCreate(); LeakCanary.install(this); } }

应用运行起来后,LeakCanary会自动去分析当前的内存状态,如果检测到泄漏会发送到通知栏,点击通知栏就可以跳转到具体的泄漏分析页面。 关于LeakCanary的更多分析可以查看这里。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3